<!DOCTYPE html>
<html lang="zh-cn">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>htmlcss 阶段</title>
    <style>
        h3 {
            width: 200px;
            height: 300px;
            line-height: 300px;
            text-align: center;
            font-size: 30px;
            background-color: #ccc;
        }
    </style>
</head>

<body>
    <!-- <h3>0</h3> -->


    <script>

        // 要求：
        // 简单计算器编程题（这个练习不用继承）

        // 构造函数 Calc
        // 属性 ：
        // result 用于记录运算结果的

        // 方法：
        // add  加法 , 调用该方法返回加法运算结果
        // sub  减法 , 调用该方法返回减法运算结果
        // mul  乘法 , 调用该方法返回乘法运算结果
        // exc  除法 , 调用该方法返回除法运算结果
        // init 初始化 , 调用该方法显示计算结果

        // 例如：
        // var o1 = new Calc("+",80,20);
        // var o2 = new Calc("-",80,20);
        // var o3 = new Calc("*",80,20);
        // var o4 = new Calc("/",80,20);

        // console.log(o1);// Calc {result: 100}
        // console.log(o2);// Calc {result: 60}
        // console.log(o3);// Calc {result: 1600}
        // console.log(o4);// Calc {result: 40}

        // o1.init();//显示加法结果 100


        // 编码：
        function Calc(str, x, y) {
            // 添加属性
            this.result = null ;
            // 转number
            x = x - 0;
            y = y - 0;

            // 转整型
            x = x * 1000;
            y = y * 1000;

            // 处理逻辑
            switch (str) {
                case "+":
                    // 加法
                    this.result = this.add(x,y) / 1000;
                    break;
                case "-":
                    // 减法
                    this.result = this.sub(x,y) / 1000;
                    break;
                case "*":
                    // 乘法
                    this.result = this.mul(x,y) / 1000000;
                    break;
                case "/":
                    // 除法
                    this.result = this.exc(x,y);
                    break;
                default: 
                    // 提示
                    console.log("这不是数学题了!");
                    break;
            }

        }
        // 在原型对象上添加方法
        Calc.prototype.add  = function(x,y){ 
            return x + y ;
        }
        Calc.prototype.sub  = function(x,y){ 
            return x - y ;
        }
        Calc.prototype.mul  = function(x,y){ 
            return x * y ;
        }
        Calc.prototype.exc  = function(x,y){ 
            return x / y ;
        }
        Calc.prototype.init = function(x,y){ 
            // 判断得到运算结果
            if(this.result == null){
                console.log("没有计算结果");
                return ;
            }
            // 渲染结果
            document.write("<h3>"+this.result+"</h3>");
        }


        // 创建实例对象
        // var app = new Calc("/",20,5);
        var app = new Calc("+",0.1,0.3);

        console.log(app);// Calc {result: 150}
        app.init();



    </script>
</body>

</html>